草庐IT

C++ 多重虚拟继承与 COM

全部标签

c# - 将引用和 com 目录添加到 visual studio?

VisualStudio最近忘记了我的SQLServerCESDK安装(它们仍然存在,我尝试重新安装)。我只是想知道是否可以为visualstudio添加一个目录来查找引用?有点像在C++中如何拥有包含目录。 最佳答案 你可以为visualstudio指定一个目录来查找引用:AddReferenceSearchPathDialogBox“使用此对话框指定项目系统将搜索的附加目录路径,以解析对应用程序中DLL、程序集或模块的引用。” 关于c#-将引用和com目录添加到visualstudi

c++ - 使用 native /C++ 代码在 VS2010 中创建简单 COM 对象的最简单方法是什么?

这是我发布的先前问题的后续问题(请参阅here)。我正在尝试从在HTML页面中运行的Javascript调用我的native/C++代码。所引用问题的答案是创建一个COM对象。然后,Javascript可以创建COM对象的实例并调用其上的方法以获取native/C++代码。所以现在我只剩下尝试创建一个简单的COM对象来接受来自Javascript的调用。看起来要走的路是创建一个DLL并将COM对象放入该DLL中。多年前,我阅读了大量有关COM的书籍,但从那时起就试图忘记它:)现在我很头疼,想知道如何在不成为COM专家的情况下轻松地解决这个问题。是否有推荐的使用COM对象设置DLL的简单

windows - COM 服务器 : ESP not saved across a function call when calling interface method

我正在EXE文件中实现COM服务器。准确地说,我正在向现有应用程序添加COM接口(interface)。最终目标是使应用程序自动化。第一个组件和一个接口(interface)(目前只有一个方法)基本就位。我可以在DLL中构建进程内服务器并成功获取接口(interface)指针并调用该方法。这是第一步,因为我只是在学习。我以后不需要DLL;它只是作为概念证明,我的组件和接口(interface)基本上没问题。然后我在EXE中构建了一个进程外服务器。我已经到了可以从客户端调用CoCreateInstance()的地步,然后启动EXE,注册其工厂,然后工厂创建组件的实例。CoCreateIn

c++ - 如何以编程方式确定网卡是虚拟网卡?

在HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WindowsNT/CurrentVersion/NetworkCards/下,我可以枚举我机器上安装的每个网卡。但是有些应用,尤其是虚拟机,会安装一些虚拟网卡。我的问题是:如何以编程方式确定网卡是虚拟网卡? 最佳答案 取决于虚拟机。如果它使用例如QEMU作为硬件仿真,将很难确定它不是“真实的东西”——充其量,你可能会注意到它比真实的东西应该更快,但你很难被插入知道这一点。当然,虚拟机也可能在虚拟机中安装了真实的网卡。所以你不能真正确定它是不是真实的,即使

windows - 如何将 XLib key 代码转换为 Microsoft 虚拟 key ?

如何将X11键码转换为microsoftvirtualkeycodeintprocessKeyboardMessage(XEvent*event){assert(KeyPress==event->type);//TODO:Beforereturningconvertkeycodeintomicrosoftvirtualkeycodereturn(event->xkey.keycode);} 最佳答案 一种选择是对每个平台上所有可能的键进行枚举。然后您可以以系统的native格式处理应用程序中的键码。你需要做一些微妙的事情来解决某些情

Windows PE 确定入口点虚拟地址

我正在使用“PE编辑器”检查Windows可执行文件,它显示入口点为0x15B8,我们如何确定该入口点的地址为虚拟地址? 最佳答案 入口点是相对于模块的加载地址存储的。模块可以通过设置IMAGE_OPTIONAL_HEADER中的ImageBase字段来声明其首选地址(参见thispage)。但是,操作系统可以自由选择另一个地址,或者是因为首选地址正在使用中,或者是最近因为ASLR。我不确定你在什么环境下运行这个,但如果你用一个实时运行的程序来做这个:这是一个实现细节,但在NT上你可以转换一个HMODULE成一个指针,这是模块的加载

windows - 如何以编程方式将 COM+ 组件 -> 事务设置为不支持?

我正在寻找一种解决方案,以编程方式将Com+组件属性->事务支持修改为“不支持”手动步骤如下:打开组件服务对话框(comexp.msc)展开组件服务->计算机->我的电脑查找并展开COM+QCDeadLetterQueueListener在打开的组件中展开文件夹Components找到组件QC.DLQListener并打开该组件的上下文菜单并选择属性在“属性”屏幕上,选择“交易”选项卡并将交易支持设置为不支持点击“确定”保存更改 最佳答案 在我花了几个小时解决这个问题之后,我终于在C#上找到了解决方案。我从以下文章中获得了深刻的见解

windows - 为什么有时 .data 部分的虚拟大小大于原始大小?

最近我发现,PE中的.data部分的虚拟大小可以大于原始大小(在文件中)。这是相当令人吃惊的。有人说这是某处未初始化数据的结果。但是在分析了一些PE之后,实在找不到这个多余的数据。以下是某些程序的PEDump结果的链接:"Helloworld"PEDump如您所见,.data部分的虚拟大小大于原始大小。为什么在这个特定示例中会这样? 最佳答案 任何初始化数据的值都存储在该部分中,如果二进制文件想在内存中为任何未初始化数据保留空间,则虚拟大小将大于原始数据大小。您不会在文件中找到此数据,因为它不需要存在于此。引用数据(在代码部分中)的

windows - 直接访问 Windows 虚拟打印机端口

似乎有一种方法可以在不使用专用打印机驱动程序的情况下直接向WindowsUSB虚拟打印机端口(例如USB001)写入和读取数据。有人知道怎么做吗? 最佳答案 最简单的方法是我在原始评论中提出的方法。您可以使用您想要的任何驱动程序创建USB打印机(通用文本总是工作良好),然后将其共享。从这里您可以使用类似的方式连接到共享netuselpt1\\your_workstation\printer_share然后您可以打印到lpt1(或复制到lpt1),您将利用Windows假脱机程序将文件获取到那里。另一种选择是在代码中执行此操作,将数据

PHP COM 端口与 DIO 的连接

我正在尝试将称重机与PHP连接起来。我已经用super终端测试过它工作正常。但是当我将PHP代码与fopen或dio_open一起使用时,它会被执行,但是当fgets或dio_read是调用,它挂起并且不显示任何内容。打开示例exec('modecom2:BAUD=2400PARITY=Ndata=8stop=1xon=on');$fp=fopen("COM2:","r");if(!$fp){echo"Uh-oh.Portnotopened.";}else{echofgets($fp);fclose($fp);}DIO示例exec('modeCOM2:baud=2400data=8st